package ObjectOutputStream.project;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/*
    ObjectOutputStream 对象的序列化流（将对象写入到文件中叫做序列化）：extends OutputStream抽象类
    作用：把对象以流的方式写入到文件中

   特有的方法：void writeObject（Object obj）：将指定的对象写入ObjectOutputStream

   使用步骤：1.创建ObjectOutputStream对象，构造方法中传入字节输出流
            2.使用ObjectOutputStream对象中的void writeObject（Object obj）方法，把对象写入到文件中
            3.释放资源

   注意：1.要序列化的或反序列化类需要实现Serializable接口来启动序列化,先当与给类添加一个序列化标记（序列号），当进行序列化的时候会检查是否有这个标记
        2.静态（static）变量是不可以被序列化和反序列化的，transient关键字和static性质一样，都不可以被序列化和反序列化
        3.若改变了序列化类中的内容，则对应的序列化就会改变，再反序列化就会发生错误
            解决方案：在序列化类中把序列号写死（使用静态常量），让其不再改变
 */
public class PracticeMain {
    public static void main(String[] args) {
        try {
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\f.txt"));
            objectOutputStream.writeObject(new Student("张三",50));
            objectOutputStream.close();
        }catch (IOException e){
            System.out.println(e);
        }
    }
}
